Auf Hardware-IOs via EC-Engineer zugreifen

Vorheriger Artikel: Laufzeitsystem für Einsatz von EC-Master konfigurieren

In diesem Artikel:

In Neuron Power Engineer: Projekt erstellen

Falls nicht bereits erfolgt, starten Sie Neuron Power Engineer und erstellen Sie ein Projekt, in dem Sie auf die Hardware-IOs zugreifen wollen.

In EC-Engineer: Zum Feldbus verbinden, Feldbus durchsuchen, ENI-Datei exportieren, ESI-Dateien anfordern

Neuron Power Engineer benötigt die ENI-Datei ("EtherCAT Network Information"-Datei) im XML-Format, die in →EC-Engineer erzeugt wird. Anhand der folgenden Schritte können Sie diese ENI-Datei schnell erstellen. Falls Sie mehr Hilfe zur Verwendung von EC-Engineer benötigen, schlagen Sie in der Dokumentation von EC-Engineer nach (Menü Hilfe in EC-Engineer).

  1. Starten Sie EC-Engineer. Stellen Sie die deutsche Sprache ein, damit Sie die folgenden Schritte einfacher nachvollziehen können.
    So können Sie die Sprache in EC-Engineer umschalten: Menü SettingsLanguages – Wählen Sie die deutsche Sprache.

  2. Verbinden Sie sich in EC-Engineer zum EtherCAT-Feldbus:

    1. Klicken Sie im Geräte-Editor (Startseite) auf TCP/IPRemote Konfiguration.

    2. Wählen Sie EtherCAT Master Unit (Class A) und drücken Sie OK.

    3. Geben Sie im Geräte-Editor unter Slaves sind mit einem Remotesystem verbunden die IP-Adresse der SPS (des Windows-PC) ein. Drücken Sie Auswählen.
      Falls Sie einen Windows-PC als SPS verwenden, achten Sie darauf, dass Sie nicht die IP-Adresse der reservierten Netzwerkkarte eingeben.

    4. Im Menü Netzwerk wählen Sie EtherCAT-Netzwerk durchsuchen.
      Ergebnis: Aufgrund der Einträge in der Datei RTSIO.cfg auf der SPS wird der EtherCAT-Feldbus gefunden und durchsucht. Der Projekt-Explorer von EC-Engineer zeigt einen Eintrag Slave_xxxx (beachten Sie, dass pro Klemme auf dem Feldbus xxxx ein Platzhalter für den tatsächlichen Text ist).

    5. Stellen Sie sicher, dass die Namen der Variablen (im Geräte-Editor, Register Variablen angeführt) →IEC-Bezeichner sind. Falls Sonderzeichen in den Namen enthalten sind, wie z.B. Umlaute (äöü) oder ß, kann Neuron Power Engineer auf die Hardware-IOs nicht zugreifen.

  3. Drücken Sie Export ENI in der Symbolleiste. Speichern Sie die ENI-Datei in einen beliebigen Ordner.
    Die ENI-Datei darf einen beliebigen Namen haben. Beispiel: EK1110.xml

Zusätzlich benötigt Neuron Power Engineer die entsprechende ESI-Dateien ("EtherCAT Slave Information"-Datei) im XML-Format. Eine ESI-Datei enthält die EtherCAT-Gerätebeschreibung und kann vom Gerätehersteller angefordert werden.

In Neuron Power Engineer: ENI-Datei und ESI-Dateien ins Projekt ziehen, Global-Objekt erstellen, SPS-Objekt konfigurieren und GLOBALS-Abschnitt inkludieren

Wechseln Sie zu Neuron Power Engineer und führen Sie die folgenden Schritte durch:

  1. Ziehen Sie die ENI-Datei und die ESI-Dateien in einen beliebigen Ordner des Neuron Power Engineer-Projekts.

  2. Konfigurieren/Erweitern Sie das SPS-Objekt des Projekts so:

    1. Öffnen Sie das SPS-Objekt, das die anzusprechende SPS repräsentiert.

    2. Nur für das Alternativszenario erforderlich (Engineering-PC ≠ SPS): Suchen Sie die Zeile mit ADDRESS bzw. PORT und ersetzen Sie die eingetragene IP-Adresse bzw. die eingetragene Portnummer durch die entsprechenden Angaben für Ihre SPS (Details: siehe unter "SPS im SPS-Objekt konfigurieren").

    3. Suchen Sie den Textteil RESOURCE ... ON. Ersetzen Sie die hinter ON eingetragene Plattform durch die erforderliche Plattform:

      Die SPS ist:

      Verwenden Sie diese Plattform:

      Beispiel für geänderte Zeile im SPS-Objekt

      ein Windows-PC

      WindowsX86

      RESOURCE local ON WindowsX86 { ON_CHANNEL := LocalChannel }

       

    4. Tragen Sie nach dieser Zeile die Angabe für IO_IMPORT ein. Am besten verwenden Sie dafür die verfügbare Vorlage ioe aus der Inhaltshilfe.
      Vervollständigen Sie die eingefügte Angabe entsprechend. Verwenden Sie wieder die Inhaltshilfe zum Vervollständigen, wo diese eine Liste zur Verfügung stellt.

      Beispiel für eine Ressource mit einer ENI-Datei EK1110.xml, die in den Ordner 'src' gezogen wurde
      RESOURCE local ON WindowsX86 { ON_CHANNEL := LocalChannel }
      { IO_IMPORT PROVIDER := EtherCatProvider, SERVICE := EtherCAT, PARAMS := "src/EK1110.xml", GLOBALS := "src/GlobalsEK1110" }

      Das Attribut GLOBALS spezifiziert den projektrelativen Pfad und den Namen für das Global-Objekt, in dem anschließend die Deklarationen für die Ressource-globalen Variablen von Neuron Power Engineer eingetragen werden sollen. Hier wird GlobalsEK1110 im Ordner src spezifiziert.
      Das Attribut PARAMS spezifiziert den projektrelativen Pfad und den Namen der ENI-Datei, auf deren Basis anschließend die Deklarationen erzeugt werden.

    5. Tragen Sie nach der Zeile mit IO_IMPORT die Angabe für INCLUDE_GLOBALS ein und ergänzen Sie diese um den Namen des Globals-Objekts, wie er für das Attribut GLOBALS spezifiziert wurde.
      Ergebnis, sofern das Global-Objekt nicht vorhanden ist: Die Angabe für INCLUDE_GLOBALS wird als fehlerhaft gekennzeichnet. Ignorieren Sie diese Kennzeichnung, da das Global-Objekt durch einen späteren Schritt erstellt wird.

      Beispiel
      RESOURCE local ON WindowsX86 { ON_CHANNEL := LocalChannel }
      { IO_IMPORT PROVIDER := EtherCatProvider, SERVICE := EtherCAT, PARAMS := "src/EK1110.xml", GLOBALS := "src/GlobalsEK1110" }
      {INCLUDE_GLOBALS GlobalsEK1110}
    6. Deklarieren Sie mehrere Tasks, wobei Sie einen der Tasks als IO-Task auszeichnen müssen. Informieren Sie sich unter "Mehrere Programmtypen zuordnen (= neue Instanzen erstellen)" über Details zur Vorgehensweise.
      (Info) Achten Sie darauf, dass der IO-Task bei Einsatz des EC-Masters für den Buszugriff verantwortlich ist. Ist die Zykluszeit zu hoch, so besteht die Möglichkeit, dass Ein- bzw. Ausgangsmodule in einen „Failsafe“-Zustand gehen. Infolgedessen erhält die Anwendung möglicherweise keine Daten mehr bzw. kann keine Daten mehr schreiben. Erfahrungsgemäß ist ein INTERVAL im Bereich weniger Millisekunden (z.B. 2 ms) passend. Weiters sollte dem IO-Task bei Verwendung des EC-Masters eine hohe Priorität (niedrige Zahl) zugewiesen werden.

      Beispiel für einen Testaufbau mit einem IO-Task
      TASK DefaultTask(INTERVAL := TIME#500ms, PRIORITY := 38229);
      { IO } TASK FastTask(INTERVAL := TIME#2ms, PRIORITY := 2);   (* This is the IO-task. *)

      Als Option können Sie das IO-Service für den IO-Task spezifizieren, wie es bei der Angabe für IO_IMPORT definiert wurde.IO_IMPORT

      Beispiel für einen Testaufbau mit einem IO-Task und IO-Service
      TASK DefaultTask(INTERVAL := TIME#500ms, PRIORITY := 38229);
      { IO := EtherCAT } TASK FastTask(INTERVAL := TIME#2ms, PRIORITY := 2);
    7. Deklarieren Sie mehrere Programminstanzen und weisen Sie die zuvor deklarierten Tasks entsprechend zu:

      Beispiel für mehrere Programminstanzen
      PROGRAM Program1 WITH DefaultTask :
          Program1;
      PROGRAM AccessIO WITH FastTask:
          Program1; 

      Informieren Sie sich unter "Mehrere Programmtypen zuordnen (= neue Instanzen erstellen)" über Details zur Vorgehensweise.

    8. Speichern Sie das SPS-Objekt: Menü DateiSpeichern

  3. Synchronisieren Sie die Ressource mit der ENI-Datei: Kontextmenü für das SPS-Objekt, Befehl Mit IO-Anbietern synchronisieren
    Ergebnis: Das Global-Objekt (hier: GlobalsEK1110) wird nun erstellt oder – falls es bereits vorhanden ist – aktualisiert. Die benötigten Deklarationen für die Ressource-globalen Variablen werden darin im GLOBALS-Abschnitt eingetragen Diese Ressource-globalen Variablen repräsentieren die Hardware-IOs, die physikalischen Adressen sind bereits eingetragen (nach dem Schlüsselwort AT).

    Beispiel für den synchronisierten Inhalt
    /***** Generated File - DO NOT EDIT - Last updated: 2017-04-24 09:41:41 *****/
    /** generated from RESOURCE "myResource" with the following directive: **/
    /** { IO_IMPORT PROVIDER := EtherCatProvider, SERVICE := EtherCAT, PARAMS := "src/EK1110.xml", GLOBALS := "src/GlobalsEK1110" } **/
    GLOBALS GlobalsEK1110
      VAR_GLOBAL
        Slave_1002EL1008Channel1Input AT %IX1.0.0 : BOOL;
        Slave_1002EL1008Channel2Input AT %IX1.0.1 : BOOL;
        Slave_1004EL3102Channel1Status AT %IB1.1 : BYTE;
        Slave_1004EL3102Channel2Value AT %IW1.5 : INT;      
      END_VAR
    END_GLOBALS
  4. Keine der Ressource-globalen Variablen ändern

    Neuron empfiehlt, dass Sie

    • den Name des GLOBALS-Abschnitts nicht ändern.
      Grund: Andernfalls kann die entsprechende Referenz für INCLUDE_GLOBALS im SPS-Objekt nicht aufgelöst werden.

    • keine dieser Ressource-globalen Variablen ändern.
      Grund: Die Deklarationen der Ressource-globalen Variablen werden durch den Befehl Mit IO-Anbietern synchronisieren synchronisiert und aktualisiert (siehe "Geänderte Hardware-IOs berücksichtigen" für Details zur Aktualisierung).

In Neuron Power Engineer: Auf die deklarierten Variablen im ST-Code zugreifen

Nun können Sie auf die deklarierten globalen Variablen im Kontext von →POE über →externe Variablen zugreifen:

  1. Öffnen Sie ein ST-Objekt.

  2. Deklarieren Sie im ST-Objekt eine externe Variable – und zwar innerhalb der Deklaration jener POE, in der der Zugriff erforderlich ist. Möglich ist der Zugriff innerhalb der Deklaration des Programms, der Deklaration eines Funktionsbausteins oder der Deklaration einer Funktion.

    Beispiel für Deklarationen der externen Variablen

    VAR_EXTERNAL
        Slave_1002EL1008Channel1Input : BOOL;
        Slave_1002EL1008Channel2Input : BOOL;
        Slave_1004EL3102Channel1Status : BYTE;
        Slave_1004EL3102Channel2Value : INT;
    END_VAR

    Informieren Sie sich unter "Deklaration von externen Variablen in ST" über die ST-Syntax, die für die externe Variable erforderlich ist.

  3. Verwenden Sie im ST-Objekt die externe Variable innerhalb der Deklaration der POE (z.B. verwenden Sie die externe Variable in einer Zuweisung).

  4. Speichern Sie das ST-Objekt: Menü DateiSpeichern

Diagnose-Möglichkeiten

Nach diesen Schritten können Sie bereits auf die Hardware-IOs im ST-Code zugreifen.

Im Artikel "Geänderte Hardware-IOs berücksichtigen" finden Sie noch die durchzuführenden Schritte, falls sich Hardware-IOs am EtherCAT-Feldbus ändern. Im Artikel "Physikalische Adressen auf Basis von EC-Master und EC-Engineer" finden Sie Hintergrund-Informationen zu den physikalischen Adressen.